home *** CD-ROM | disk | FTP | other *** search
- Vollkompatible Erweiterung der Ataris um mehrere Parallelports
- **************************************************************
-
-
- Ziel
- ----
- Es werden 4 Druckerports gebraucht, mit denen auch ahnungslose Programme
- arbeiten können. Es soll alles, was am Originalport nutzbar ist, an
- beliebigen Ports nutzbar sein, z.B. Drucker, EPROM- und GAL-Programmierer,
- Scanner, Sampler, Foliotalks. Neue Programme sollen den Port selbst wählen
- können. So ergeben sich die Forderungen:
- - aus der Sicht eines Programms volle Kompatibilität zum Original,
- inklusive der Bidirektionalität der Datenleitungen D7..D0
- - die Ports ändern ihre Ausgangspegel nicht, wenn sie inaktiv sind
- - durch Software umschaltbar
- Das Projekt trägt den Namen Mulpri und das Kurzzeichen 4P.
-
-
- Copyright
- ---------
-
- Dies ist die freie Version von Mulpri. Diese Version gehört zu der
- besonderen Art von Shareware, die aus einer Hardware-Bauanleitung und
- Software besteht. Natürlich sind weder Hardware noch Software in ihrer
- Funktion eingeschränkt. Der Shareware-Preis, den jeder Mulpri-Bastler
- bezahlen sollte, beträgt 30DM (Kontonummer folgt). Das halte ich für Mulpri
- angemessen, hoffentlich viele Bastler/Nutzer auch.
-
- Dieses Paket darf und soll frei kopiert werden, solange alle im Abschnitt
- Inhalt aufgeführten Dateien unverändert weitergegeben werden. Wenn Dateien
- oder modifizierte Originaldateien hinzufügen werden, so muß für diese ein
- wesentlich anderer Name gewählt und deren Inhalt vermerkt werden. Die
- Übersetzung in andere Sprachen ist ausdrücklich erwünscht.
-
- Mulpri darf für den Eigenbedarf gebaut werden. Gegen den Aufbau für gute
- Freunde habe ich ebenfalls nichts. Dabei darf der Bastler aber keinen
- Gewinn machen. Eine kommerzielle Fertigung oder Verwertung ist nur mit
- meiner schriftlichen Zustimmung erlaubt.
-
- Ich habe diese Bauanleitung sorgfältig überprüft. Ich hafte in keiner Weise
- für eventuelle Fehler und/oder (daraus resultierende) Beschädigungen
- irgendwelcher Objekte oder Subjekte oder die Unbrauchbarkeit für einen
- Einsatzzweck. Ich bitte aber darum, mir Fehler mitzuteilen. Diese
- Bugreports sollten so genau wie möglich sein. Nur wenn ich einen Fehler
- finden kann, kann ich ihn beseitigen.
-
- In diesem Paket sind alle Informationen zu Mulpri enthalten. Außer dem
- Layout als Scooter-Datei und den Quellen der Programme habe auch ich nicht
- mehr. Anfragen werden normalerweise nur beantwortet, wenn es mich kein
- Geld kostet (Email oder frankierten Rückumschlag beilegen). Ich habe auch
- ein Telefon, das man nur in Ausnahmefällen strapazieren sollte.
-
- Es gibt bei mir eine fertig aufgebaute Version, die sich im Aufbau
- möglicherweise von der freien Version unterscheidet. Die Fertigversion
- enthält alle Funktionen der freien Version und eventuell noch
- Erweiterungen. Preis und Bezugsbedingungen teile ich auf Anfrage mit.
-
- Wahrscheinlich gibt es die Platinen der freien Version und die GALs
- ebenfalls bei mir. Preis erstmal auf Anfrage.
-
- Meine Postanschrift:
- Harun Scheutzow
- Dresdener Straße 83
- D-10179 Berlin
-
- Per Email bin ich zu erreichen
- im Mausnetz: Harun Scheutzow @B
- aus dem Internet: Harun_Scheutzow@B.maus.de
-
- Meine Bankverbindung:
- Kontoinhaber: Harun Scheutzow
- Kontonummer: 581854107
- Bankleitzahl: 10010010
- Bank: Postgiroamt Berlin
-
-
- Inhalt des Paketes
- ------------------
- Bilder sind 300dpi GEM-IMG monochrom, Maßstab 1:1. Bestückungspläne sind
- Ansicht von der Oberseite (Bauelemente auf Unterseite erscheinen in
- Spiegelschrift). Layouts sind Ansicht von der Unterseite (Kupferseite) der
- Platine.
- MUL_USG.IMG Layout der Mulpri-Hauptplatine. Sieht mit 300dpi sehr eng
- aus. Ich habe 1270dpi-Druck auf Film belichtet -> super.
- MUL_BP.IMG Bestückungsplan der Mulpri-Hauptplatine
- SND_USG.IMG Layout der Soundchipplatine
- SND_BP.IMG Bestückungsplan der Soundchipplatine
-
- 4P_TEXT.TXT dieser Text, die gesamte Erklärung
- 4P.JED JEDEC-File für Hauptplatinen-GALs
- 4P_SND.JED JEDEC-File für Soundchipplatinen-GAL
- 4P_AUTO.PRG Treiber für den AUTO-Ordner
- 4P_AUTO.TXT Dokumentation zu 4P_AUTO.PRG
- 4PRN_COO.TXT Dokumentation des von 4P_AUTO angelegten Cookies
- 4P_ACC.ACC Accessory für die Einstellungen
- 4P_ACC.TXT Dokumentation zu 4P_ACC.ACC
- Es gehören in Zukunft dazu (am 08.08.1993 noch nicht):
- 4P_CPX.CPX CPX für die Einstellungen
- 4P_CPX.TXT Dokumentation zu 4P_CPX.CPX
-
-
- Realisierung
- ------------
-
- Der Soundchip-PortB (D0-D7 auf SUBD-25pol, pin2-pin9) wird je Druckerport
- (kurz: Dp) über ein 8Bit-Latch geführt. Vom Soundchip-PortA werden Bit5
- (/STROBE-Signal auf SUBD-25pol-pin1) und optional Bit7 (/SELIN, gern für
- Scanneranschluß herausgeführt auf SUBD-25pol-pin17, beim Falcon ist
- standardmäßig Bit3 herausgeführt) werden ebenfalls je Dp über ein Latch
- geführt. Die BUSY-Signale (SUBD-25pol-pin1) werden über einen X-auf-1
- Multiplexer gesammelt und dem MFP Bit0 zugeführt. Für den Falcon könnte man
- noch ACK über einen Multiplexer einsammeln, das liegt auf SUBD-25pol-pin10
- und geht an MFP Bit1. Das /STROBE-Latch muß bei einem Reset automatisch auf
- H-Pegel gesetzt werden. Für Bidirektionalität muß das PortB-Latch auch auf
- Eingabe schaltbar sein.
-
- Auf der Datenbusseite des Soundchip hängt eine Schaltung, die beim
- Beschreiben des Auswahlregisters des Soundchips die Datenbits D3..D0
- speichert, wenn eine Adresse von $1X geschrieben wurde. Mit den Bits D3..D0
- wird der Dp ausgewählt, wobei immer nur das Bit des gewünschten Dp auf H zu
- setzen ist. Inaktivierung aller Dp ist zum Umschalten erforderlich. Der
- Wert nach Reset ist binär 0001 (erster Dp ausgewählt). Die Software setzt
- immer das zu aktivierende Dp-Bit auf H, aber die RDxL-Leitungen sind
- L-aktiv und enthalten die negierten Werte der Softwareseite. Bei der
- TTL-Realisierung wird durch die Gleichungen des GALs sichergestellt, daß
- immer nur ein Dp aktiviert wird. So werden Kurzschlüsse zwischen den
- Treiberausgängen bei der Betriebsart Eingabe durch unsinnige
- Softwareeinstellungen verhindert. Wenn ein MACH eingesetzt wird, so ließen
- sich bei gleichzeitiger Aktivierung von mehr als einem Port
- Sonderfunktionen realisieren, z.B. die automatische Durchschaltung eines
- Eingabeports auf einen Ausgabeport.
-
- Für Bidirektionalität wird beim Beschreiben des Auswahlregisters mit $07
- ein FlipFlop gesetzt, das bei Reset und jedem anderen Schreiben auf das
- Auswahlregister zurückgesetzt wird. Ist das FlipFlop gesetzt und es erfolgt
- ein Schreibzugriff auf das Datenregister, so wird das Bit7 vom Datenbus
- gespeichert (Bit7 =0 bedeutet Dp auf Eingabe). Dieses Bit7 (IOD7) wird von
- den Druckerports gelatcht. Durch Reset werden IOD7 und alle I/O-Flags auf
- Ausgabe gesetzt.
-
- Ist ein Dp aktiviert, so sind seine Latches auf Durchgang geschaltet und
- der Multiplexer legt sein BUSY an den MFP an. Ist ein Dp inaktiv, so sind
- die Latches im Speicherzustand und BUSY wird nicht durchgeschaltet.
-
- Die Umschaltung der Druckerports übernimmt ein Programm. Es ist immer
- darüber informiert, welcher Dp aktiv ist und welche Pegel an den inaktiven
- Dp zuletzt ausgegeben wurden. Zur Umschaltung wird zuerst der Dp
- inaktiviert. Dann werden aus dem Soundchip die Zustände des PortB und des
- Bit5 (optional auch Bit7 oder Bit3) von PortA gelesen und in den
- Merkerzellen für den ehemals aktiven Dp abgelegt. Auch Bit7 von Register7
- wird gelesen und gespeichert. Nun werden aus den Merkerzellen des zu
- aktivierenden Dp die eben genannten Zustände geholt und in den Soundchip
- geschrieben. Zuletzt wird der neue Dp aktiviert.
-
- Der Anschluß erfolgt am Original-Druckerport und mit 8 Leitungen an die
- Platine am Soundchip. Diese 8 Leitungen können auch steckbar ausgelegt und
- herausgeführt werden, so daß die Mulpri-Platine extern angeschlossen wird.
- Die Stromversorgung der Mulpri-Platine kommt über die Leitungen vom
- Soundchip. Für die Versorgung von Geräten, die an Mulpri angeschlossen
- werden, sollte man unbedingt extra Leitungen verlegen.
-
-
-
- Schaltung am Soundchip
- ======================
-
- Signalbelegung der Steuerleitungen BDIR (pin27) und BC1 (pin29) im ST
- BDIR BC1 Aktion
- inaktiv low low
- $FFFF8800 read low high Daten lesen
- $FFFF8800 write high high Auswahlregister beschreiben
- $FFFF8802 read low low (=inaktiv -> sinnloser Zugriff)
- $FFFF8802 write high low Daten schreiben
-
- Wichtig! Der Soundchip wird anscheinend nur mit /AS und nicht mit /UDS
- selektiert, so daß bei der Selektion noch keine gültigen Daten auf dem Bus
- liegen. Erst mit der Deselektionsflanke darf man die Daten vom Bus
- übernehmen.
-
- BDIR und BC1 müssen zur gleichen Zeit umschalten, sonst entstehen
- zwischenzeitlich andere Zustände. Der Soundchip ist relativ langsam und so
- unkritisch. Aber auch für ein 25ns-GAL dürften die Flanken gleichzeitig
- genug sein, da BDIR und BC1 im ST durch je ein Gatter eines 74LS02 aus RWL,
- SNDCSL und A1 erzeugt werden:
- BDIR = /(RWL + SNDCS)
- BC1 = /(A1 + SNDCS)
-
-
- Schaltung am Soundchip-Computerbus
- ----------------------------------
-
- Signale vom Soundchip-Businterface:
- RSTL L-aktives Reset
- BDIR
- BC1
- D7..D0 Daten vom Bus
-
- Signale zur externen Schaltung:
- RD3L..RD0L L-aktive 1 aus 4 Auswahl des aktiven Dp
- REXL L-aktives Resetsignal
- IOD7 Bit7 von Register7 des Soundchip, Richtungsbit
-
- Es wird ein GAL20v8(-25ns) am Soundchip eingesetzt.
-
- GAL 20v8 wird mit selbsterzeugtem GCLK getaktet.
- /OE des GALs wird auf GND gelegt.
- Es hat Register mit zusätzlicher Selbsthaltung. Die Computerbusdefinition
- sichert, daß die Eingangssignale nicht im Moment der Taktflanke wechseln.
- ( <- ist das = für registered-Ausgänge)
-
-
- Resetproblem
- ------------
- Mit der steigenden Flanke des Reset-Signals RSTL werden die Reset-Werte in
- die GAL-Register geschrieben. So erhält man erstens nach PowerOn andere
- Werte als nur die GAL-Register-Grundstellung 0, und zweitens werden auch
- die anderen Resetmöglichkeiten über den CPU-Befehl RESET und das Drücken
- der Reset-Taste berücksichtigt. Will man aber bestimmte Pegel einschreiben,
- und taktet das GAL nicht nur direkt mit dem RSTL-Signal, sondern über ein
- GAL-Gatter, so müssen die Pegel an den Registereingängen des GALs lange
- genug nach der RSTL-L/H-Flanke noch anliegen. Dafür wird eine Verzögerung
- des Reset-Signals gebraucht, die durch ein GAL-Gatter erzeugt wird. Dieses
- Reset heißt REXL und wird auch der externen Schaltung zugeführt. Damit
- keine Störungen durch evtl. Reflexionen auf REXL auftreten (Takt, obwohl
- RSTL nicht mehr L ist), wird REXL mit RSTL verknüpft.
-
-
- GAL20v8 Pinbelegung
- -------------------
- ---*---
- GCLK | 1 24| VCC sndcp40
- sndcp37 D0 | 2 23| DEBC1
- sndcp36 D1 | 3 22| GCLK
- sndcp35 D2 | 4 21| REXL
- sndcp34 D3 | 5 20| RD0L
- sndcp33 D4 | 6 19| RD1L
- sndcp32 D5 | 7 18| RD2L
- sndcp31 D6 | 8 17| RD3L
- sndcp30 D7 | 9 16| IOD7
- sndcp29 BC1 |10 15| IOFE (intern)
- sndcp27 BDIR |11 14| RSTL sndcp23
- GND |12 13| GND sndcp1
- -------
-
- DEBC1 ist das extern auf der H/L-Flanke um mindestens 25ns verzögerte
- BC1-Signal. Die Verzögerung erfolgt mit einem 4.3kOhm/22pF-Tiefpaß.
- Minimalverzögerung für H/L ist 28ns bei 2.7V auf 2.0V bei Cgesamt=22pF. Die
- L/H-Flanke ist auf jeden Fall schnell genug (DEBC1 geht in 200ns von 0V auf
- 2V, wenn BC1 auch nur auf 2.7V geht, Cgesamt=34pF), damit ein definierter
- H-Zustand rechtzeitig vor Ende dieses Zugriffes erreicht wird. Die
- H/L-Flanke erreicht den L-Pegel auf jeden Fall früh genug vor Ende des
- eventuell ganz schnell nachfolgenden Zugriffs, da eine Entladung von 5V auf
- 0.8V nur 270ns dauert. Die 4.3kOhm belasten BC1 nicht wesentlich, da
- Cgesamt max. 34pF (22pF Kondensator, 12pF GAL max.) ist.
-
- Beide GCLK verbunden, beide GND verbunden.
- GAL sitzt auf kleiner Platine und diese kopfüber auf Soundchip. Beide Pin1
- zeigen in gleiche Richtung.
-
-
- Belegung des 8poligen EXT-Verbinders
- ------------------------------------
- 1 VCC
- 2 GND
- 3 REXL
- 4 RD0L
- 5 RD1L
- 6 RD2L
- 7 RD3L
- 8 IOD7
-
-
- GAL20v8 Gleichungen
- -------------------
-
- ;Takt für das GAL: L-Impuls bei Schreiben auf Auswahlregister,
- ;L-Impuls bei Schreiben auf Register7, L-Impuls bei Reset
- ;auf GAL-Clock-Eingang gelegt
- ;L/H-Flanke bei Inaktivierung schreibt ein
- GCLK.OE = 1
- /GCLK = BDIR * BC1 * REXL
- + /RSTL * /REXL
- + BDIR * /BC1 * IOFE * REXL
-
- ;getriebenes Reset für externe Schaltung, intern als verzögertes
- ;(länger aktives)
- REXL.OE = 1
- REXL = RSTL
-
- ;speichert /D0 beim $1X-Schreiben auf Auswahlregister, L nach Reset
- ;es darf nur ein Bit D3..D0 auf H gesetzt sein, sonst wirkt es
- ;wie D3..D0 =L, also alles inaktiv
- /RD0L <- /RD0L * D7
- + /RD0L * D6
- + /RD0L * D5
- + /RD0L * /D4
- + /RD0L * /DEBC1
- + D0 * /D1 * /D2 * /D3 * /D7 * /D6 * /D5 * D4 * DEBC1
- + /REXL
-
- ;speichert /D1 beim $1X-Schreiben auf Auswahlregister, H nach Reset
- /RD1L <- /RD1L * D7 * REXL
- + /RD1L * D6 * REXL
- + /RD1L * D5 * REXL
- + /RD1L * /D4 * REXL
- + /RD1L * /DEBC1 * REXL
- + /D0 * D1 * /D2 * /D3 * /D7 * /D6 * /D5 * D4 * DEBC1 * REXL
-
- ;speichert /D2 beim $1X-Schreiben auf Auswahlregister, H nach Reset
- /RD2L <- /RD2L * D7 * REXL
- + /RD2L * D6 * REXL
- + /RD2L * D5 * REXL
- + /RD2L * /D4 * REXL
- + /RD2L * /DEBC1 * REXL
- + /D0 * /D1 * D2 * /D3 * /D7 * /D6 * /D5 * D4 * DEBC1 * REXL
-
- ;speichert /D3 beim $1X-Schreiben auf Auswahlregister, H nach Reset
- /RD3L <- /RD3L * D7 * REXL
- + /RD3L * D6 * REXL
- + /RD3L * D5 * REXL
- + /RD3L * /D4 * REXL
- + /RD3L * /DEBC1 * REXL
- + /D0 * /D1 * /D2 * D3 * /D7 * /D6 * /D5 * D4 * DEBC1 * REXL
-
- ;speichert D7 beim Schreiben auf Register7 des Soundchips
- ;H nach Reset (Soundchip-Wert für Ausgabe)
- ;(bei BC1 =L gibt es nur Takt bei Schreiben auf Register7)
- IOD7 <- IOD7 * DEBC1
- + D7 * /DEBC1
- + /REXL
-
- ;H solange Soundchip-Auswahlregister $07 enthält (intern)
- IOFE <- REXL * /D7 * /D6 * /D5 * /D4 * /D3 * D2 * D1 * D0
-
-
-
- Der x646, ein bidirektionaler Treiber mit Registern
- ===================================================
-
- Pinbelegung
- -----------
- --*--
- CAB | 1 24| VCC
- SAB | 2 23| CBA
- DIR | 3 22| SBA
- A0 | 4 21| /OE
- A1 | 5 20| B0
- A2 | 6 19| B1
- A3 | 7 18| B2
- A4 | 8 17| B3
- A5 | 9 16| B4
- A6 |10 15| B5
- A7 |11 14| B6
- GND |12 13| B7
- -----
-
-
- Verhalten
- ---------
-
- zwei 8Bit-Ports A und B sowie zwei zugeordnete 8Bit-Register
-
- bei OEL =L
- DIR =L A ist Ausgang, B ist Eingang
- SBA =L B nach A durchgeschaltet
- SBA =H A liefert Daten aus RegisterB
- DIR =H A ist Eingang, B ist Ausgang
- SAB =L A nach B durchgeschaltet
- SAB =H B liefert Daten aus RegisterA
-
- bei OEL =H
- DIR =egal, A und B sind Eingang
-
- CAB und CBA sind von DIR und OEL unabhängig.
-
- SAB wirkt nur bei DIR =H.
- SBA wirkt nur bei DIR =L.
-
- Eine L/H-Flanke an CAB speichert die Daten von A im RegisterA.
- Eine L/H-Flanke an CBA speichert die Daten von B im RegisterB.
-
- Ist als Latch brauchbar: SAB und CAB sowie SBA und CBA verbunden. Bei L
- werden die Daten durchgeschaltet, mit der L/H-Flanke gespeichert und bei
- H die Registerdaten ausgegeben (hoffentlich ohne Spikes).
-
-
- Einsatz im Druckerport
- ----------------------
-
- OEL = RDxL * DBx
- also =L (aktiv) bei Port x auf Ausgabe oder Port x selektiert
- realisiert über wiredAND mit 2 Dioden und 10kOhm-Widerstand nach +5V
-
- DIR wird mit negierten gelatchten Richtungsbit des Soundchips gesteuert.
- PxDIR ist =H für Soundchip auf Eingabe, x646 also auch vom erweiterten
- Druckerport zum alten Computerport geschaltet
-
- Anschlüsse B an Soundchip, A nach außen an neuen Druckerport.
-
- CAB =L immer (eigentlich: egal).
- SAB =L immer, bei Eingabefunktion immer durchschalten.
-
- CBA und SBA zusammen und als H-aktives "Latch enable" an RDxL. Dafür müssen
- alle alten RDx-Definitionen invertiert werden. Ein RDx ist also hier RDxL
- und L-aktiv.
-
- Das x in x646 steht für die verschiedenen verwendbaren Baureihen.
- Empfehlenswert sind 74HCT646 und 74LS646. Der LS dürfte etwas
- unempfindlicher gegen elektrische Zerstörung sein, frißt aber einige mA
- mehr Strom. Ebenfalls nutzbar sind 74ALS646, 74ACT646 und 74FCT646, die
- aber alle unnötig schnell schalten und sehr viel Strom liefern können
- (Geschwindigkeit und Strom von links nach rechts steigend). Das kann zu
- Störimpulsen und Reflexionen auf den langen Leitungen führen. Auf keinen
- Fall sollten 74646, 74S646 oder 74AS646 verwendet werden. Daneben
- existieren noch andere Logikserien, aber über alle will ich mich nicht
- auslassen.
-
-
-
- Die Mulpri-Platine
- ==================
-
-
- Belegung der 26poligen Leiterplattenverbinder
- ---------------------------------------------
- für Flachbandkabel auf SUB-D-Quetschbuchse/stecker
- Pinnummern der SUB-D-Buchse
- Sicht auf die Bohrungen von der Bestückungsseite:
- ------------------------------------**
- |13 12 11 10 09 08 07 06 05 04 03 02 01|
- |xx 25 24 23 22 21 20 19 18 17 16 15 14|
- --------------------------------------
-
-
- Die beiden GALs
- ---------------
-
- Beide GALs sind GAL 16v8 und gleich. Das spart Arbeit. Jedes GAL ist für
- zwei Druckerports zuständig. Die BUSY-Ausgänge sind direkt verbunden und
- werden deshalb als tristate betrieben.
-
- Das GAL latcht das STR-Signal und das DIR-Signal. STR wird außerdem
- getrieben, damit die Latches nicht von außen umgekippt werden können. Die
- beiden BUSY-Eingänge werden zusammengefaßt. Bei Reset (REXL =L) werden die
- PxSTR =H und die PxDIR =L gesetzt.
-
-
- GAL-Pinbelegung
- ---------------
-
- Für das zweite GAL sind alle "P0" durch "P2" und alle "P1" durch "P3" zu
- ersetzen, wenn der Anschluß in der Schaltung interessiert.
-
- --*--
- VCC | 1 20| VCC
- REXL | 2 19| BENA intern
- RD0L | 3 18| P0DIR
- RD1L | 4 17| P0STR
- IOD7 | 5 16| P0SU intern
- P0BUSY | 6 15| P1SU intern
- frei | 7 14| P1DIR
- STR | 8 13| BUSY
- P1BUSY | 9 12| P1STR
- GND |10 11| GND
- -----
-
-
- GAL16v8 Gleichungen
- -------------------
-
- ;BUSY Output Enable, BUSY hochohmig, wenn kein Port gewählt
- BENA.OE = 1
- BENA = /RD0L
- + /RD1L
-
- ;Dir-Latch Port0
- P0DIR.OE = 1
- P0DIR = P0DIR * RD0L * REXL
- + /IOD7 * /RD0L * REXL
- + /IOD7 * P0DIR * REXL
-
- ;Strobe-Ausgang Port0
- P0STR.OE = 1
- P0STR = P0SU
-
- ;Strobe-Latch Port0, intern
- P0SU.OE = 1
- P0SU = /REXL
- + P0SU * RD0L
- + STR * /RD0L
- + STR * P0SU
-
- ;Strobe-Latch Port1, intern
- P1SU.OE = 1
- P1SU = /REXL
- + P1SU * RD1L
- + STR * /RD1L
- + STR * P1SU
-
- ;Dir-Latch Port1
- P1DIR.OE = 1
- P1DIR = P1DIR * RD1L * REXL
- + /IOD7 * /RD1L * REXL
- + /IOD7 * P1DIR * REXL
-
- ;BUSY-Ausgang zum Computer, gesammelte PxBUSY
- ;hochohmig wenn beide Px inaktiv
- BUSY.OE = BENA
- BUSY = P0BUSY * /RD0L
- + P1BUSY * /RD1L
-
- ;Strobe-Ausgang Port1
- P1STR.OE = 1
- P1STR = P1SU
-
-
- Schaltungsdetails
- -----------------
- Zum Schutz der GAL-Eingänge (BUSY) wurden 1kOhm-Widerstände vorgesehen.
-
- Die 330Ohm-Pullups an den BUSY-Eingängen der Mulpri-Platine belasten die
- Signalquelle wie viele alte Centronics-Ports mit 16mA im Low-Zustand. Der
- AtariST hat meist ebenfalls 330Ohm-Widerstände. Man kann sie etwas größer
- wählen, um die Last zu verringern. Das kann aber beim Einlesen von
- schnellen Impulsfolgen (z.B. vom GAL-Prommer) zu seltsamen Effekten führen,
- die nicht auf ihre Ursache hindeuten. So wurden bei 2kOhm-Pullups
- beispielsweise einige Low-Pegel als High-Pegel gelesen (wirklich!).
-
-
- Bauteilliste Soundchipplatine
- -----------------------------
- GAL20v8-25 programmiert
- optional 24polige Fassung (schmal)
- 4.3kOhm SMD-Widerstand
- 22pF SMD-Kondensator
- 100nF SMD-Kondensator
- (optional) 40polige Fassung (mit gedrehten Kontakten)
- mindestens 13, höchstens 21 Kontaktstifte (eine Seite in Leiterplatte,
- andere Seite in Fassung auf Soundchip oder direkt auf Soundchip)
-
-
- Bauteilliste Mulpri-Platine
- ---------------------------
- 4 Stück 74HCT646 oder 74LS646
- 2 Stück GAL16v8-25 programmiert
- optional 2 Stück 20polige Fassung (schmal, mit gedrehten Kontakten)
- 8 Stück Dioden 1N4148, besser noch SD103B o.ä. Shottky-Typ
- 4 Stück 330Ohm Widerstand (330Ohm bis 820Ohm)
- 4 Stück 1kOhm Widerstand (500Ohm bis 1.8kOhm)
- 4 Stück 10kOhm Widerstand (5kOhm bis 20kOhm)
- 5 Stück 100nF Kondensator (Abblockkondensator)
- 10 Stück Drahtschnipsel als Brücken
- 5 Stück Schneidklemm-Leiterplattenverbinder
- 5 Stück 25poliges Flachbandkabel, Länge nach Bedarf
- 4 Stück SUB-D-Schneidklemm-Buchse (weiblich)
- 1 Stück SUB-D-Schneidklemm-Stecker (männlich)
- Draht zur Verbindung mit Soundchip-Platine, optinal 15poligen SUB-D-Stecker
- und 15polige SUB-D-Buchse für lösbare Verbindung
-
-
- Aufbau der Soundchipplatine
- ---------------------------
-
- Zuerst werden die SMD-Bauelemente bestückt.
-
- Je nach Platz über dem Soundchip sollte man für das GAL und die Platine
- eine Fassung vorsehen, nur für die Platine eine Fassung verwenden oder
- alles direkt löten. Die Kontaktstifte sind auf der Oberseite einzusetzen,
- wo auch das GAL sitzt. Die Kabel zur Mulpri-Platine (falls gewünscht, mit
- 15poligem SUB-D-Verbinder) sollten ebenfalls angelötet werden, werden aber
- noch nicht mit der Mulpri-Platine verbunden.
-
- Die Platine sitzt kopfüber (GAL zum Soundchip hin) auf dem Soundchip. Pin1
- von GAL und Soundchip zeigen in die gleiche Reichtung.
-
- Wenn die Soundchip-Platine komplett auf dem Soundchip sitzt, kann eine
- Funktionskontrolle durchgeführt werden. Der Rechner muß sich genau wie vor
- dem Einbau verhalten, ansonsten sind irgendwo Kurzschlüsse oder
- schwerwiegende Defekte entstanden und zu suchen.
-
-
- Aufbau der Mulpri-Platine
- -------------------------
-
- Zuerst werden die Brücken bestückt.
-
- Für das Anquetschen der Flachbandkabel an die Leiterplattenverbinder (LPV)
- gibt es einige Varianten. Auf jeden Fall muß man darauf achten, daß Pin1
- des LPV und des SUB-D-Verbinders auf der gleichen Ader des Kabels zu liegen
- kommen. Das Kabel wird in den LPV auf der Pin1-Seite bündig eingelegt, so
- daß Pin26 frei bleibt.
- - Man bohrt in ein Stück Hartholz, Plast oder Metall 26 Löcher entsprechend
- der Pins, steckt den LPV hinein und das Ganze mit Kabel zum Quetschen in
- einen Schraubstock. Danach wird der LPV eingelötet.
- - Man lötet zuerst den LPV ein, steckt das Kabel ein und legt zum Quetschen
- auf der Leiterseite ein Stück Weichholz zwischen Schraubstock und Platine,
- in das sich die überstehenden Pins hineinbohren können. Dann wird
- gequetscht.
- - Oder aber ach nicht doch ... (Man muß nicht mit einem Schraubstock
- arbeiten, sondern kann _bei_ _entsprechendem_ _Geschick_ solche
- Klemmverbindungen mit einem Hammer zusammenschlagen.)
-
- Es werden alle anderen Bauelemente bestückt.
-
- Die Kabel von der Soundchipplatine werden angelötet. Dabei ist wieder
- darauf zu achten, daß die gekennzeichneten Pin1 miteinander verbunden
- werden und die restlichen Adern entsprechend folgen.
-
- Wurde ein Steckverbinder zur Soundchipplatine vorgesehen, so wird dieser
- gesteckt. Jetzt erfolgt ein Testlauf noch ohne Verbindung zum alten
- Druckerport. Alles sollte wie früher funktionieren, andernfalls muß man die
- Ursachen für Rauchzeichen oder sonstiges suchen.
-
- Die Verbindung zwischen Original-Druckerport und Mulpri wird hergestellt.
- An Port1 der Mulpri wird ein Drucker (oder etwas anderes geeignetes)
- angeschlossen. Wenn der Rechner gestartet wird, sollte sich das Gerät an
- Port1 so verhalten, als wäre es am Originalport.
-
- Wie und wo oder ob er/sie/es Mulpri in den Rechner einbaut, muß jeder selbst
- entscheiden.
-
-
- Verbindung zwischen Soundchipplatine und Mulpri-Platine
- -------------------------------------------------------
-
- Wenn diese beiden Platinen nicht fest sondern steckbar verbunden werden
- sollen, so sind dafür eine 15polige SUB-D-Buchse auf der
- Soundchipplatinenseite und ein 15poliger SUB-D-Stecker auf der
- Mulpri-Platinenseite zu verwenden.
-
- Pinbelegung:
- (Pin1..8 wie Pin1..8 des EXT-Anschlusses auf Soundchipplatine)
- 1 VCC
- 2 GND
- 3 REXL
- 4 RD0L
- 5 RD1L
- 6 RD2L
- 7 RD3L
- 8 IOD7
- 9, 10, 11 optional VCC (+5V) für externe Geräte
- 12, 13, 14, 15 optional GND für externe Geräte
-
- Auf keinen Fall darf die Stromversorgung für externe Geräte wie
- EPROM/GAL-Programmierer irgendwo auf der Mulpri-Platine entnommen werden.
- Dafür sind die Zuleitungen nicht ausgelegt, so daß es zu Störungen kommen
- kann. Wenn man seinem Rechnernetzteil die Versorgung dieser Geräte zumuten
- kann, müssen dafür extra Kabel verlegt werden, am besten direkt vom GND-
- und VCC-Anschluß des Rechnernetzteils auf der Computerplatine. Dafür sind
- Pin9..11 und Pin12..15 reserviert.
-
-
- Nach Einschalten oder Reset
- ---------------------------
- ist Port1 eingeschaltet. Alle Ports sind auf Ausgabe, die /STROBE-Leitungen
- sind inaktiv (High). Wird kein Treiber geladen, kann man mit Port1 wie mit
- dem Originalport arbeiten.
-
-
- Falcon
- ------
- Der Soundchip des Falcon heißt YM3439 und befindet sich in einem 44poligen
- Quadflatpack-Gehäuse. Dafür paßt diese Soundchipplatine leider nicht.
- Ansonsten ist er aber wohl kompatibel, so daß ich bei entsprechendem
- Interesse wahrscheinlich eine Version für den Falcon entwickeln werde.
- Außerdem hat der Falcon einen Eingang (ACK) und einen Ausgang (SELECT) mehr
- am Druckerport als der ST. Diese kann man entweder ignorieren, fest mit
- einem Port verdrahten, über noch zwei GALs in freier Verdrahtung führen,
- oder: eine spätere kommerzielle Version der Hardware wird diese beiden
- Signale wahrscheinlich auch umschalten. Die Software wird dann entsprechend
- ergänzt.
-
- Falls es jemanden interessiert:
- Die Druckerschnittstelle entspricht der des Atari-ST, bis auf zwei
- hinzugekommene Signale. Auf Pin17 liegt jetzt SELECT, das vom Soundchip PortA
- Bit3 gesteuert wird. Die Grundeinstellung nach Reset ist Low. Auf Pin10 ist der
- Eingang ACK, der zum MFP-Port Bit1 führt. Hier haben die Atari-Hardwaredesigner
- wieder gepennt (wie im 1040STE am Monodetect) und einen Pullup-Widerstand
- vergessen (Eingang ist freifliegend).
-
- Übrigens: Busy wird nur noch mit 3.3kOhm gegen +5V gezogen. Ist ein biβchen
- viel, meine ich.
-
-
- Scanner
- -------
- Eine beliebte Anschlußmöglichkeit für Flachbettscanner am ST-Druckerport
- ist das zusätzliche Herausführen eines Soundchip-PortA-Signal (bit7 war es
- wohl) auf Pin17 des Druckerports. Da die freie Version der Hardware das
- Umschalten dieses Signals noch nicht unterstützt, sollte man auf der
- Mulpri-Platine Pin17 des Anschlusses zum Originalport mit Pin17 eines Ports
- durch einen Draht verbinden. An diesen Port schließt man dann seinen
- Scanner an.
-
-
- Einige Problemdrucker
- ---------------------
- Die Treiber der Mulpri-Karte können wesentlich mehr Strom liefern als der
- Originalport. So sollte auch der Anschluß alter Drucker funktionieren, die
- intern auf jedem Signal 330Ohm-Pullups haben. Die LS- und HCT-Versionen der
- Treiber können diesen Strom von 16mA normalerweise liefern, auch wenn der
- Hersteller dafür nicht garantiert. Wer ganz sicher gehen und solche Geräte
- anschließen will, sollte ACT(garantiert 24mA)- oder FCT(garantiert
- 48mA)-Treiber einsetzen (bringt aber mehr Hochfrquenzmüll auf die
- Leitungen).
-
- Dann gibt es noch wenige Drucker, die grundsätzlich nur funktionieren, wenn
- das auf Pin17 der 25poligen Druckerbuchse liegende (oder auch nicht) Signal
- SELECT auf Low-Pegel (also Masse) ist. In diesem Fall sollte man Pin17 mit
- Pin18 verbinden, entweder im Druckerkabel, oder auf dem für Druckeranschluß
- vorgesehenen Port von Mulpri.
-
-
-
- Software
- ========
-
- Zur Software gehört das Treiberprogramm 4P_AUTO.PRG, das Accessory
- 4P_ACC.ACC und das CPX-Modul 4P_CPX.CPX. Das CPX ist am 08.08.1993 noch
- nicht vorhanden. Die Anleitungen dazu befinden sich in den Files
- 4P_AUTO.TXT, 4P_ACC.TXT und 4P_CPX.TXT.
-
-
- CPX-Modul 4P_CPX.CPX
- --------------------
- Das CPX kann alternativ zum Accessory benutzt werden. Es enthält die
- gleichen manuellen Umschaltfunktionen.
-
- Am 08.08.1993 existiert es noch nicht.
-
-
- Druckerspooler
- --------------
- Im Hintergrund arbeitende Druckerspooler, besonders die von der
- BUSY-Interrupt getriebenen Sorte, sollte man tunlichst deaktivieren bzw.
- ganz rauswerfen, wenn man beabsichtigt, Mulpri mal umzuschalten.
-
- Druckerspoolerprogrammierer! Seht euch das File 4PRN_COO.TXT an und
- ergänzt euren Spooler so, daß er mit Mulpri zusammenarbeitet.
-
-
-
- Kompatibilität
- ==============
-
- Mulpri kann als voll kompatibel bezeichnet werden. Ich möchte aber auf alle
- Kleinigkeiten hinweisen, die mir als Inkompatibilität einfallen. Sie haben
- sich aber noch nicht negativ bemekrbar gemacht:
- - größerer Treiberstrom der Ausgänge
- - falls LS-Treiber, max. 0.4mA Eingangsstrom im L-Zustand, wenn D7..D0 auf
- Eingang geschaltet sind
- - BUSY-Signal und Ausgangssignale sind um etwa 25ns zusätzlich verzögert
- - /STROBE kann nicht mehr auf Eingang geschaltet werden (PortA des
- Soundchips hat m.W. noch keiner absichtlich auf Eingang geschaltet)
- - BUSY kann nicht mehr als Ausgang geschaltet werden (hat m.W. auch noch
- keiner absichtlich gemacht, wobei der MFP die 16mA für den Pullup auch
- kaum aufbringen kann)
-
- Wenn ein Port im Zustand LOCKED1P ist, so darf man wie gewohnt am Soundchip
- fummeln. Ich bitte aber darum, im Interesse der Kompatibilität, die Ports
- nur mit der Funktion Pswitch des 4P_AUTO umzuschalten oder zur Ausgabe auf
- nichtaktive Ports die anderen Funktionen zu benutzen. Wer eine bestimmte
- nichtexistente Funktion braucht, sollte sich bei mir melden.
-
- Wenn ein Programm zur Steuerung einer bestimmten Hardware mehr als einen
- Port braucht und darauf schneller als über Pswitch zugreifen möchte,
- sollte sich der Programmierer ebenfalls bei mir melden. Dafür habe ich den
- Zustand LOCKED4P vorgesehen, zu dem es noch spezielle Routinen in 4P_AUTO
- geben wird.
-
- Wer in seinem Programm durch direkte Zugriffe auf den Soundchip die
- Mulpri-Hardware umschaltet, ohne sich vorher mit mir entsprechend
- verständigt zu haben, hat mein ALLERGRÖSSTES UNVERSTÄNDNIS.
-
-
-
- Versionen
- =========
-
- Ich vergebe keine Versionsnummern, sondern überlasse die Unterscheidung dem
- in der Installationsmeldung ausgegebenen Datum bzw. dem Erstellungsdatum
- der Datei. Ich notiere das Datum in der deutschen Schreibweise, also
- Tag.Monat.Jahr.
-
- Neue Versionen sind zuerst in der Maus Berlin, Telefonnummer 030-727056
- (oft besetzt, Gastdownload 10.00-19.00 und 23.00-03.00), zu finden und
- verbreiten sich schnell über die Mäuse. Man sollte nach dem Filenamen
- "MULPRI*.*" suchen lassen. Reine Softwareupdates werden unter "4PSOFT*.*"
- erscheinen. Das Archiv wird MULPRIxx.LZH heißen, wobei xx
- für die fortlaufende Veröffentlichungsnummer steht.
-
- 08.08.1993 erste öffentliche Version
-
-
- Harun Scheutzow, 26.06.1993 ...
-